module.exports = function(fn) {
    // 返回的是一个包装过的函数
    return function () {
        var self = this
        var args = Array.prototype.slice.call(arguments)
        // 就是返回了一个promise，不过自己写了resolver函数
        return new Promise(function (resolve, reject) {
            // 很简单，就参数最后，加一个callback
            args.push(function (err, res) {
                if (err) reject(err)
                else resolve(res)
            })
            fn.apply(self, args)
        })
    }
};